{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.导入工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# -*- coding: utf-8 -*-\n",
    "\n",
    "import numpy as np    # 矩阵操作\n",
    "import pandas as pd   # SQL数据处理\n",
    "import matplotlib.pyplot as plt  #画图\n",
    "import seaborn as sns    #画图\n",
    "\n",
    "from sklearn.metrics import r2_score #评价回归预测模型的性能\n",
    "\n",
    "#图形出现在Notebook里而不是新窗口\n",
    "%matplotlib inline  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2.数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.1导入数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# -*- coding: utf-8 -*-\n",
    "dataPath = './JupyterData/'\n",
    "data = pd.read_csv(dataPath+\"day.csv\")\n",
    "#显示前5行数据\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>726</th>\n",
       "      <td>727</td>\n",
       "      <td>2012-12-27</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.254167</td>\n",
       "      <td>0.226642</td>\n",
       "      <td>0.652917</td>\n",
       "      <td>0.350133</td>\n",
       "      <td>247</td>\n",
       "      <td>1867</td>\n",
       "      <td>2114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>727</th>\n",
       "      <td>728</td>\n",
       "      <td>2012-12-28</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.253333</td>\n",
       "      <td>0.255046</td>\n",
       "      <td>0.590000</td>\n",
       "      <td>0.155471</td>\n",
       "      <td>644</td>\n",
       "      <td>2451</td>\n",
       "      <td>3095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>728</th>\n",
       "      <td>729</td>\n",
       "      <td>2012-12-29</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.253333</td>\n",
       "      <td>0.242400</td>\n",
       "      <td>0.752917</td>\n",
       "      <td>0.124383</td>\n",
       "      <td>159</td>\n",
       "      <td>1182</td>\n",
       "      <td>1341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>729</th>\n",
       "      <td>730</td>\n",
       "      <td>2012-12-30</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.255833</td>\n",
       "      <td>0.231700</td>\n",
       "      <td>0.483333</td>\n",
       "      <td>0.350754</td>\n",
       "      <td>364</td>\n",
       "      <td>1432</td>\n",
       "      <td>1796</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>730</th>\n",
       "      <td>731</td>\n",
       "      <td>2012-12-31</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.215833</td>\n",
       "      <td>0.223487</td>\n",
       "      <td>0.577500</td>\n",
       "      <td>0.154846</td>\n",
       "      <td>439</td>\n",
       "      <td>2290</td>\n",
       "      <td>2729</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "726      727  2012-12-27       1   1    12        0        4           1   \n",
       "727      728  2012-12-28       1   1    12        0        5           1   \n",
       "728      729  2012-12-29       1   1    12        0        6           0   \n",
       "729      730  2012-12-30       1   1    12        0        0           0   \n",
       "730      731  2012-12-31       1   1    12        0        1           1   \n",
       "\n",
       "     weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "726           2  0.254167  0.226642  0.652917   0.350133     247        1867   \n",
       "727           2  0.253333  0.255046  0.590000   0.155471     644        2451   \n",
       "728           2  0.253333  0.242400  0.752917   0.124383     159        1182   \n",
       "729           1  0.255833  0.231700  0.483333   0.350754     364        1432   \n",
       "730           2  0.215833  0.223487  0.577500   0.154846     439        2290   \n",
       "\n",
       "      cnt  \n",
       "726  2114  \n",
       "727  3095  \n",
       "728  1341  \n",
       "729  1796  \n",
       "730  2729  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#显示后5行数据\n",
    "data.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "instant       0\n",
       "dteday        0\n",
       "season        0\n",
       "yr            0\n",
       "mnth          0\n",
       "holiday       0\n",
       "weekday       0\n",
       "workingday    0\n",
       "weathersit    0\n",
       "temp          0\n",
       "atemp         0\n",
       "hum           0\n",
       "windspeed     0\n",
       "casual        0\n",
       "registered    0\n",
       "cnt           0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#显示每列空值数目\n",
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 数据特征无空值，无需做数据填补"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.2显示数据基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(731, 16)"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.info()\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 可看出dteday为对象型数据,线性模型无法处理数值型以外的类型，后面要对其处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.3查看数据特征的分布\n",
    "数量、均值、标准差、最小a值、四分之一分位数、中分位数、四分之三分位数、最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#各属性统计特性  ()\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3.1目标特征y的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x25d395c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig=plt.figure()\n",
    "sns.distplot(data.cnt.values,bins=30,kde=True) #连续型变量\n",
    "plt.rcParams['font.sans-serif']=['SimHei']      #绘图支持中文\n",
    "plt.rcParams['axes.unicode_minus']=False       #绘图支持中文\n",
    "plt.xlabel(\"租车人数y的直方图及核密度估计\",fontsize=12)\n",
    "plt.show()\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3.2目标特征y的散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x259e7b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(range(data.shape[0]),data[\"cnt\"].values,color='purple')\n",
    "plt.title(\"租车人数y散点图\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3.3输入特征x的直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e356fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.season,order=[1,2,3,4])  #离散型变量\n",
    "plt.xlabel(\"季节\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e49ac18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.yr,order=[0,1])  #离散型变量\n",
    "plt.xlabel(\"年份\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e525c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.mnth)  #离散型变量\n",
    "plt.xlabel(\"月份\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e307550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.holiday)  #离散型变量\n",
    "plt.xlabel(\"是否节假日\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e2a3908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.weekday)  #离散型变量\n",
    "plt.xlabel(\"周几\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e05b160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.workingday)  #离散型变量\n",
    "plt.xlabel(\"是否工作日\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e04f4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data.weathersit,order=[1,2,3,4])  #离散型变量\n",
    "plt.xlabel(\"天气\")\n",
    "plt.ylabel(\"数量\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1dfe4fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(data.temp.values,bins=50,kde=True) #连续型变量\n",
    "plt.xlabel(\"气温\",fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1e77a4a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(data.atemp.values,bins=50,kde=True) #连续型变量\n",
    "plt.xlabel(\"体感温度\",fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ec9a9e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(data.hum.values,bins=50,kde=True) #连续型变量\n",
    "plt.xlabel(\"湿度\",fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1ed32b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(data.windspeed.values,bins=50,kde=True) #连续型变量\n",
    "plt.xlabel(\"风速\",fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3.特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.1去掉y的噪声点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "8317.800000000001\n",
      "171.285\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(726, 16)"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#99%分位点和1%分位点\n",
    "max = np.percentile(data.cnt.values, 99.5)\n",
    "min = np.percentile(data.cnt.values, 0.05)\n",
    "print(max)\n",
    "print(min)\n",
    "# 去除噪声\n",
    "data = data[data.cnt <= max]\n",
    "data = data[data.cnt >= min]\n",
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.2多个特征之间的相关性"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 由说明知,instant特征为行数序号，dteday特征为object型日期，可提前去掉排除干扰\n",
    "#### 另外,3个y此次只要求预测cnt，把其他两个y去掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [],
   "source": [
    "#去掉干扰特征\n",
    "data=data.drop('instant',axis=1)\n",
    "data=data.drop('dteday',axis=1)\n",
    "\n",
    "#去掉此次不要求的预测值y1,y2\n",
    "data=data.drop('casual',axis=1)\n",
    "data=data.drop('registered',axis=1)\n",
    "\n",
    "#数据集所有的特征列\n",
    "columns=data.columns\n",
    "\n",
    "#corr()计算相关系数,abs()取绝对值,通常认为大于0.5为强相关\n",
    "data_corr = data.corr().abs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2793d0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画出热图，annot=True 格子里显示数值\n",
    "plt.subplots(figsize=(13,9))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "sns.heatmap(data_corr, mask=data_corr < 1, cbar=False)\n",
    "\n",
    "#保存热图\n",
    "plt.savefig('单车特征相关性热图.png' )    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 找出线性强相关的特征对(系数大于0.7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "temp and atemp = 0.99\n",
      "season and mnth = 0.83\n"
     ]
    }
   ],
   "source": [
    "#相关系数阈值 0.7\n",
    "threshold = 0.7\n",
    "#强相关的特征对list\n",
    "corr_list = [] \n",
    "#shape[0]读取矩阵第一维度的长度\n",
    "size = data_corr.shape[0]  \n",
    "\n",
    "\n",
    "#从第一列特征开始，循环遍历比较下一列与本列的相关系数.存入list\n",
    "for i in range(0,size):\n",
    "    for j in range(i+1,size):      \n",
    "        if(data_corr.iloc[i,j] >=threshold and data_corr.iloc[i,j] <1 ) or (data_corr.iloc[i,j] < 0 and data_corr.iloc[i,j] <= -threshold ):\n",
    "            corr_list.append([data_corr.iloc[i,j],i,j])\n",
    "\n",
    "            \n",
    "#按大小排序\n",
    "sort_corr_list = sorted(corr_list,key=lambda x : -abs(x[0]))\n",
    "#输出\n",
    "for v,i,j in sort_corr_list:\n",
    "    print(\"%s and %s = %.2f\" % (columns[i],columns[j],v))\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 画出强相关特征对的散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28d6b828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28a58668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for v,i,j in sort_corr_list:\n",
    "    sns.pairplot(data, size=6, x_vars=columns[i],y_vars=columns[j] )\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可看出，相关系数大于0.7的有两对，X高度相关的特征对保留其一"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "metadata": {},
   "outputs": [],
   "source": [
    "#去掉高度相关的x特征对中其一特征\n",
    "data=data.drop('temp',axis=1)     #temp和atemp0.99\n",
    "data=data.drop('mnth',axis=1)     #season和mnth0.83\n",
    " "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3.数据准备"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 根据年份，划分训练集(2011)与测试集(2012)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.0</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.498630</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.027397</td>\n",
       "      <td>3.008219</td>\n",
       "      <td>0.684932</td>\n",
       "      <td>1.421918</td>\n",
       "      <td>0.466835</td>\n",
       "      <td>0.643665</td>\n",
       "      <td>0.191403</td>\n",
       "      <td>3405.761644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.110946</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.163462</td>\n",
       "      <td>2.006155</td>\n",
       "      <td>0.465181</td>\n",
       "      <td>0.571831</td>\n",
       "      <td>0.168836</td>\n",
       "      <td>0.148744</td>\n",
       "      <td>0.076890</td>\n",
       "      <td>1378.753666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>431.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.321954</td>\n",
       "      <td>0.538333</td>\n",
       "      <td>0.135583</td>\n",
       "      <td>2132.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.472846</td>\n",
       "      <td>0.647500</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>3740.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.612379</td>\n",
       "      <td>0.742083</td>\n",
       "      <td>0.235075</td>\n",
       "      <td>4586.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>6043.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           season     yr     holiday     weekday  workingday  weathersit  \\\n",
       "count  365.000000  365.0  365.000000  365.000000  365.000000  365.000000   \n",
       "mean     2.498630    0.0    0.027397    3.008219    0.684932    1.421918   \n",
       "std      1.110946    0.0    0.163462    2.006155    0.465181    0.571831   \n",
       "min      1.000000    0.0    0.000000    0.000000    0.000000    1.000000   \n",
       "25%      2.000000    0.0    0.000000    1.000000    0.000000    1.000000   \n",
       "50%      3.000000    0.0    0.000000    3.000000    1.000000    1.000000   \n",
       "75%      3.000000    0.0    0.000000    5.000000    1.000000    2.000000   \n",
       "max      4.000000    0.0    1.000000    6.000000    1.000000    3.000000   \n",
       "\n",
       "            atemp         hum   windspeed          cnt  \n",
       "count  365.000000  365.000000  365.000000   365.000000  \n",
       "mean     0.466835    0.643665    0.191403  3405.761644  \n",
       "std      0.168836    0.148744    0.076890  1378.753666  \n",
       "min      0.079070    0.000000    0.022392   431.000000  \n",
       "25%      0.321954    0.538333    0.135583  2132.000000  \n",
       "50%      0.472846    0.647500    0.186900  3740.000000  \n",
       "75%      0.612379    0.742083    0.235075  4586.000000  \n",
       "max      0.840896    0.972500    0.507463  6043.000000  "
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练集\n",
    "data_2011=data[data.yr==0]     #分割出yr=0(2011)的数据\n",
    "data_2011.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.0</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "      <td>361.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.484765</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.030471</td>\n",
       "      <td>2.961219</td>\n",
       "      <td>0.686981</td>\n",
       "      <td>1.365651</td>\n",
       "      <td>0.480947</td>\n",
       "      <td>0.611600</td>\n",
       "      <td>0.188782</td>\n",
       "      <td>5583.180055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.113261</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.172118</td>\n",
       "      <td>1.995451</td>\n",
       "      <td>0.464366</td>\n",
       "      <td>0.510267</td>\n",
       "      <td>0.157492</td>\n",
       "      <td>0.134136</td>\n",
       "      <td>0.077889</td>\n",
       "      <td>1750.135350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.101658</td>\n",
       "      <td>0.254167</td>\n",
       "      <td>0.046650</td>\n",
       "      <td>441.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.349108</td>\n",
       "      <td>0.507917</td>\n",
       "      <td>0.133721</td>\n",
       "      <td>4367.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.492425</td>\n",
       "      <td>0.611250</td>\n",
       "      <td>0.174129</td>\n",
       "      <td>5905.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.607962</td>\n",
       "      <td>0.711667</td>\n",
       "      <td>0.229475</td>\n",
       "      <td>6998.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.804913</td>\n",
       "      <td>0.925000</td>\n",
       "      <td>0.441563</td>\n",
       "      <td>8294.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           season     yr     holiday     weekday  workingday  weathersit  \\\n",
       "count  361.000000  361.0  361.000000  361.000000  361.000000  361.000000   \n",
       "mean     2.484765    1.0    0.030471    2.961219    0.686981    1.365651   \n",
       "std      1.113261    0.0    0.172118    1.995451    0.464366    0.510267   \n",
       "min      1.000000    1.0    0.000000    0.000000    0.000000    1.000000   \n",
       "25%      1.000000    1.0    0.000000    1.000000    0.000000    1.000000   \n",
       "50%      2.000000    1.0    0.000000    3.000000    1.000000    1.000000   \n",
       "75%      3.000000    1.0    0.000000    5.000000    1.000000    2.000000   \n",
       "max      4.000000    1.0    1.000000    6.000000    1.000000    3.000000   \n",
       "\n",
       "            atemp         hum   windspeed          cnt  \n",
       "count  361.000000  361.000000  361.000000   361.000000  \n",
       "mean     0.480947    0.611600    0.188782  5583.180055  \n",
       "std      0.157492    0.134136    0.077889  1750.135350  \n",
       "min      0.101658    0.254167    0.046650   441.000000  \n",
       "25%      0.349108    0.507917    0.133721  4367.000000  \n",
       "50%      0.492425    0.611250    0.174129  5905.000000  \n",
       "75%      0.607962    0.711667    0.229475  6998.000000  \n",
       "max      0.804913    0.925000    0.441563  8294.000000  "
      ]
     },
     "execution_count": 227,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#测试集\n",
    "data_2012=data[data.yr==1]     #分割出yr=1(2012)的数据\n",
    "data_2012.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 分割特征与目标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['season', 'yr', 'holiday', 'weekday', 'workingday', 'weathersit',\n",
      "       'atemp', 'hum', 'windspeed'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "# 训练集的特征X和输出Y\n",
    "y_train = data_2011['cnt'].values\n",
    "x_train = data_2011.drop('cnt',axis=1)\n",
    "# 测试集集的特征X和输出Y\n",
    "y_test = data_2012['cnt'].values\n",
    "x_test = data_2012.drop('cnt',axis=1)\n",
    "\n",
    "#特征列，用于后面显示权重系数\n",
    "columns = x_train.columns\n",
    "print(columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4.数据预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.1类别特征独热编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   season  yr  holiday  weekday  workingday  weathersit     atemp       hum  \\\n",
       "0       1   0        0        6           0           2  0.363625  0.805833   \n",
       "1       1   0        0        0           0           2  0.353739  0.696087   \n",
       "2       1   0        0        1           1           1  0.189405  0.437273   \n",
       "3       1   0        0        2           1           1  0.212122  0.590435   \n",
       "4       1   0        0        3           1           1  0.229270  0.436957   \n",
       "\n",
       "   windspeed  \n",
       "0   0.160446  \n",
       "1   0.248539  \n",
       "2   0.248309  \n",
       "3   0.160296  \n",
       "4   0.186900  "
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train=pd.get_dummies(x_train)\n",
    "x_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.2数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-1.35081907  0.         -0.16783627 ... -0.61214601  1.09174727\n",
      "  -0.40316146]\n",
      " [-1.35081907  0.         -0.16783627 ... -0.6707804   0.3529164\n",
      "   0.74411127]\n",
      " [-1.35081907  0.         -0.16783627 ... -1.64545409 -1.38946848\n",
      "   0.74111588]\n",
      " ...\n",
      " [-1.35081907  0.         -0.16783627 ... -1.20366773 -0.46787213\n",
      "  -0.93756476]\n",
      " [-1.35081907  0.         -0.16783627 ... -0.87793429 -0.04711029\n",
      "  -0.74319011]\n",
      " [-1.35081907  0.         -0.16783627 ... -0.31265155 -0.18736873\n",
      "   0.3744413 ]]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n",
      "  warnings.warn(msg, DataConversionWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "#构造特征与输出的标准化器\n",
    "ss_x = StandardScaler()\n",
    "ss_y = StandardScaler()\n",
    "\n",
    "#分别对训练数据及测试数据进行标准化\n",
    "x_train = ss_x.fit_transform(x_train)\n",
    "x_test = ss_x.transform(x_test)\n",
    "\n",
    "\n",
    "#reshape(m,n)构造一个新二维数组m行 n 列，-1表示此维度和变换前一致\n",
    "y_train = ss_y.fit_transform(y_train.reshape(-1,1))\n",
    "y_test = ss_y.transform(y_test.reshape(-1,1))\n",
    "print(x_train)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.3数据归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-1.75817091e+00]\n",
      " [-1.89180796e+00]\n",
      " [-1.49380196e+00]\n",
      " [-1.33910255e+00]\n",
      " [-1.31150359e+00]\n",
      " [-1.30714586e+00]\n",
      " [-1.37686954e+00]\n",
      " [-1.77705440e+00]\n",
      " [-1.87655590e+00]\n",
      " [-1.51413803e+00]\n",
      " [-1.55626276e+00]\n",
      " [-1.62961788e+00]\n",
      " [-1.45240353e+00]\n",
      " [-1.44150920e+00]\n",
      " [-1.56715708e+00]\n",
      " [-1.59911377e+00]\n",
      " [-1.74727658e+00]\n",
      " [-1.97750998e+00]\n",
      " [-1.27518918e+00]\n",
      " [-1.07400731e+00]\n",
      " [-1.35290203e+00]\n",
      " [-1.76107606e+00]\n",
      " [-1.75744462e+00]\n",
      " [-1.44514064e+00]\n",
      " [-1.03188259e+00]\n",
      " [-2.10606301e+00]\n",
      " [-2.16053464e+00]\n",
      " [-1.62598643e+00]\n",
      " [-1.67610033e+00]\n",
      " [-1.67755290e+00]\n",
      " [-1.38340614e+00]\n",
      " [-1.48581279e+00]\n",
      " [-1.36524893e+00]\n",
      " [-1.34781801e+00]\n",
      " [-1.23306445e+00]\n",
      " [-1.74364514e+00]\n",
      " [-1.29479896e+00]\n",
      " [-1.23015930e+00]\n",
      " [-1.36234377e+00]\n",
      " [-1.30787215e+00]\n",
      " [-1.35653347e+00]\n",
      " [-1.20546550e+00]\n",
      " [-1.40446850e+00]\n",
      " [-1.31949276e+00]\n",
      " [-1.08417535e+00]\n",
      " [-1.15535160e+00]\n",
      " [-9.37465106e-01]\n",
      " [-6.76001311e-01]\n",
      " [-3.47718990e-01]\n",
      " [-1.28608350e+00]\n",
      " [-1.15753047e+00]\n",
      " [-1.66956373e+00]\n",
      " [-1.42044684e+00]\n",
      " [-1.08127019e+00]\n",
      " [-1.16116191e+00]\n",
      " [-1.41245767e+00]\n",
      " [-1.04350320e+00]\n",
      " [-7.29020358e-01]\n",
      " [-1.42335199e+00]\n",
      " [-1.12920522e+00]\n",
      " [-9.23665628e-01]\n",
      " [-1.24976908e+00]\n",
      " [-1.06166041e+00]\n",
      " [-9.65064063e-01]\n",
      " [-2.03416047e+00]\n",
      " [-1.11395317e+00]\n",
      " [-9.24391917e-01]\n",
      " [-1.10015369e+00]\n",
      " [-2.02108728e+00]\n",
      " [-1.03769289e+00]\n",
      " [-9.25118205e-01]\n",
      " [-7.18126034e-01]\n",
      " [-9.87579000e-01]\n",
      " [-9.80316117e-01]\n",
      " [-8.81540906e-01]\n",
      " [-4.80629753e-01]\n",
      " [-1.21117034e-01]\n",
      " [-2.09724209e-01]\n",
      " [-6.78906464e-01]\n",
      " [-9.65064063e-01]\n",
      " [-5.10407574e-01]\n",
      " [-9.33107376e-01]\n",
      " [-1.11903719e+00]\n",
      " [-8.68467716e-01]\n",
      " [-6.60749256e-01]\n",
      " [-1.24395878e+00]\n",
      " [-1.00065219e+00]\n",
      " [-7.12315727e-01]\n",
      " [-1.35798604e+00]\n",
      " [-1.24976908e+00]\n",
      " [-8.56120814e-01]\n",
      " [-8.37963606e-01]\n",
      " [-1.13854151e-01]\n",
      " [-2.11176786e-01]\n",
      " [-1.16987737e+00]\n",
      " [-4.34147300e-01]\n",
      " [-1.92293290e-01]\n",
      " [-1.40519478e+00]\n",
      " [-6.90527077e-01]\n",
      " [-3.70960216e-01]\n",
      " [-4.19516073e-02]\n",
      " [-9.96294460e-01]\n",
      " [-9.03329555e-01]\n",
      " [-1.00780961e-01]\n",
      " [-2.03187614e-01]\n",
      " [-1.89616569e+00]\n",
      " [ 2.45658568e-01]\n",
      " [ 1.68777467e-02]\n",
      " [-1.46537125e-01]\n",
      " [ 3.90916232e-01]\n",
      " [ 5.68856870e-01]\n",
      " [-1.25122166e+00]\n",
      " [ 4.57734757e-01]\n",
      " [ 5.70309447e-01]\n",
      " [ 4.84607425e-01]\n",
      " [ 7.22103706e-01]\n",
      " [ 3.38623473e-01]\n",
      " [ 4.73713100e-01]\n",
      " [ 8.63729928e-01]\n",
      " [ 1.38447865e+00]\n",
      " [-3.97727423e-02]\n",
      " [ 7.22829994e-01]\n",
      " [ 7.59144410e-01]\n",
      " [-5.61247756e-01]\n",
      " [ 7.46071220e-01]\n",
      " [ 8.73171676e-01]\n",
      " [ 9.50158238e-01]\n",
      " [ 6.73442388e-01]\n",
      " [ 6.94504750e-01]\n",
      " [ 1.01479790e+00]\n",
      " [ 5.63772852e-01]\n",
      " [ 1.05910149e+00]\n",
      " [ 5.07848651e-01]\n",
      " [ 2.35198026e-03]\n",
      " [ 8.33225819e-01]\n",
      " [ 4.01084268e-01]\n",
      " [ 5.20921841e-01]\n",
      " [ 3.26276571e-01]\n",
      " [ 8.49204162e-01]\n",
      " [ 1.09759477e+00]\n",
      " [ 1.74253880e+00]\n",
      " [ 9.10938669e-01]\n",
      " [ 6.30591377e-01]\n",
      " [ 7.88922231e-01]\n",
      " [ 1.14189836e+00]\n",
      " [ 9.23285571e-01]\n",
      " [ 9.24738147e-01]\n",
      " [ 9.82114925e-01]\n",
      " [ 1.00390357e+00]\n",
      " [ 5.02764633e-01]\n",
      " [ 4.18515188e-01]\n",
      " [ 4.12704881e-01]\n",
      " [ 1.13463547e+00]\n",
      " [ 1.38447865e+00]\n",
      " [ 1.40626730e+00]\n",
      " [ 1.08960560e+00]\n",
      " [ 8.29594377e-01]\n",
      " [ 1.03658655e+00]\n",
      " [ 7.22829994e-01]\n",
      " [ 3.69853870e-01]\n",
      " [ 8.57193333e-01]\n",
      " [ 1.13318290e+00]\n",
      " [ 7.65681005e-01]\n",
      " [ 1.17240246e+00]\n",
      " [ 1.07871127e+00]\n",
      " [ 1.28860860e+00]\n",
      " [ 2.62363199e-01]\n",
      " [ 1.04457572e+00]\n",
      " [ 1.24430501e+00]\n",
      " [ 9.71946888e-01]\n",
      " [ 4.38851261e-01]\n",
      " [ 1.03803913e+00]\n",
      " [ 7.99816556e-01]\n",
      " [ 1.00535615e+00]\n",
      " [ 1.15134010e+00]\n",
      " [ 1.30458694e+00]\n",
      " [ 1.37939464e+00]\n",
      " [ 9.45800508e-01]\n",
      " [ 9.02223209e-01]\n",
      " [ 1.32129157e+00]\n",
      " [ 1.53191518e+00]\n",
      " [ 1.42079307e+00]\n",
      " [ 1.24430501e+00]\n",
      " [ 9.02949498e-01]\n",
      " [ 1.91539542e+00]\n",
      " [ 9.14570111e-01]\n",
      " [ 8.88423731e-01]\n",
      " [ 8.61551063e-01]\n",
      " [ 4.60639910e-01]\n",
      " [ 1.40190957e+00]\n",
      " [ 1.07144839e+00]\n",
      " [ 4.94049173e-01]\n",
      " [ 6.18970764e-01]\n",
      " [ 6.79978983e-01]\n",
      " [ 1.21888492e+00]\n",
      " [ 1.54861981e+00]\n",
      " [ 1.82824082e+00]\n",
      " [ 1.37721577e+00]\n",
      " [ 7.64228428e-01]\n",
      " [ 8.24510359e-01]\n",
      " [ 6.72716100e-01]\n",
      " [ 2.74710100e-01]\n",
      " [-1.36263628e-02]\n",
      " [-8.77077715e-02]\n",
      " [ 1.45430779e-01]\n",
      " [ 3.15382246e-01]\n",
      " [ 8.60098487e-01]\n",
      " [ 9.08033516e-01]\n",
      " [ 7.14840823e-01]\n",
      " [ 3.19739976e-01]\n",
      " [ 7.76575330e-01]\n",
      " [ 6.50927450e-01]\n",
      " [ 6.24781071e-01]\n",
      " [ 1.04530201e+00]\n",
      " [ 1.22189553e-01]\n",
      " [ 8.49930450e-01]\n",
      " [ 1.06055406e+00]\n",
      " [ 6.45117144e-01]\n",
      " [ 2.75436389e-01]\n",
      " [ 6.68358370e-01]\n",
      " [ 8.68813947e-01]\n",
      " [ 9.98093268e-01]\n",
      " [ 1.00680873e+00]\n",
      " [ 1.08887931e+00]\n",
      " [ 5.40531626e-01]\n",
      " [ 3.00856480e-01]\n",
      " [ 6.77073830e-01]\n",
      " [ 9.58147410e-01]\n",
      " [ 9.35632472e-01]\n",
      " [ 2.89962155e-01]\n",
      " [ 5.42710491e-01]\n",
      " [ 1.29659777e+00]\n",
      " [ 3.39349761e-01]\n",
      " [ 9.82114925e-01]\n",
      " [ 1.80790474e+00]\n",
      " [ 1.25229418e+00]\n",
      " [ 9.89483269e-02]\n",
      " [ 9.11664957e-01]\n",
      " [-1.66375343e+00]\n",
      " [ 6.74168677e-01]\n",
      " [ 8.92055173e-01]\n",
      " [ 1.30603952e+00]\n",
      " [ 1.20000142e+00]\n",
      " [ 1.24139985e+00]\n",
      " [ 9.59599987e-01]\n",
      " [ 7.83111925e-01]\n",
      " [ 1.11429940e+00]\n",
      " [-3.97727423e-02]\n",
      " [-5.05323556e-01]\n",
      " [-1.02389342e+00]\n",
      " [-1.13574182e+00]\n",
      " [ 1.00400904e-01]\n",
      " [ 1.40844617e+00]\n",
      " [ 1.19128596e+00]\n",
      " [ 9.49431950e-01]\n",
      " [ 9.85746366e-01]\n",
      " [ 1.00172471e+00]\n",
      " [ 1.83924060e-01]\n",
      " [ 9.83567501e-01]\n",
      " [ 8.02721709e-01]\n",
      " [ 6.30591377e-01]\n",
      " [ 8.23057782e-01]\n",
      " [ 1.70850871e-01]\n",
      " [ 6.87241866e-01]\n",
      " [ 1.00898759e+00]\n",
      " [-7.34104377e-01]\n",
      " [ 1.46509666e+00]\n",
      " [ 1.16513958e+00]\n",
      " [ 8.89150020e-01]\n",
      " [ 5.18742976e-01]\n",
      " [ 3.64043564e-01]\n",
      " [ 1.04094428e+00]\n",
      " [ 1.30458694e+00]\n",
      " [-7.09410574e-01]\n",
      " [-3.54255585e-01]\n",
      " [ 1.19284400e-01]\n",
      " [ 7.62775852e-01]\n",
      " [ 1.03150253e+00]\n",
      " [ 9.87198943e-01]\n",
      " [ 1.14698237e+00]\n",
      " [ 1.45492862e+00]\n",
      " [ 1.52901003e+00]\n",
      " [ 1.24285243e+00]\n",
      " [ 8.40488702e-01]\n",
      " [-7.18852322e-01]\n",
      " [-3.57887027e-01]\n",
      " [ 1.73029736e-01]\n",
      " [ 1.31548126e+00]\n",
      " [ 1.18765452e+00]\n",
      " [ 8.45572720e-01]\n",
      " [ 9.74852041e-01]\n",
      " [-7.13042015e-01]\n",
      " [ 5.73214600e-01]\n",
      " [ 6.52380027e-01]\n",
      " [ 6.55285180e-01]\n",
      " [ 7.08304228e-01]\n",
      " [ 5.67404294e-01]\n",
      " [ 9.30548454e-01]\n",
      " [ 3.54601816e-01]\n",
      " [-5.42364260e-01]\n",
      " [ 2.47837433e-01]\n",
      " [-2.01818213e+00]\n",
      " [-5.42985087e-02]\n",
      " [ 1.91186944e-01]\n",
      " [ 4.80975983e-01]\n",
      " [ 5.66678005e-01]\n",
      " [ 4.12704881e-01]\n",
      " [ 4.64997640e-01]\n",
      " [ 3.77843042e-01]\n",
      " [ 1.76661177e-01]\n",
      " [ 4.57008469e-01]\n",
      " [ 5.80477483e-01]\n",
      " [ 5.10753805e-01]\n",
      " [-3.43361260e-01]\n",
      " [-2.74258409e-02]\n",
      " [ 4.80249695e-01]\n",
      " [ 2.26048783e-01]\n",
      " [ 7.84564501e-01]\n",
      " [ 5.73214600e-01]\n",
      " [-1.15389903e+00]\n",
      " [-2.56206662e-01]\n",
      " [-9.99492119e-03]\n",
      " [ 1.86829214e-01]\n",
      " [ 8.29699838e-02]\n",
      " [-4.65377698e-01]\n",
      " [-1.30641957e+00]\n",
      " [-6.09909074e-01]\n",
      " [-1.38776387e+00]\n",
      " [-4.45767913e-01]\n",
      " [-2.45312337e-01]\n",
      " [-2.43133472e-01]\n",
      " [ 3.34992031e-01]\n",
      " [-3.57160738e-01]\n",
      " [ 1.50514798e-01]\n",
      " [ 2.33311666e-01]\n",
      " [ 3.88011078e-01]\n",
      " [ 1.51241086e-01]\n",
      " [ 5.75498926e-02]\n",
      " [ 2.94319885e-01]\n",
      " [-5.89573001e-01]\n",
      " [-1.96153164e+00]\n",
      " [-6.08351036e-02]\n",
      " [ 1.55598816e-01]\n",
      " [-1.56705162e-01]\n",
      " [-4.81356041e-01]\n",
      " [-6.95505635e-02]\n",
      " [ 8.51488488e-02]\n",
      " [ 2.42753414e-01]\n",
      " [ 2.20238476e-01]\n",
      " [ 1.24368418e-01]\n",
      " [-4.84261194e-01]\n",
      " [-7.07957997e-01]\n",
      " [-2.00574966e-03]\n",
      " [ 2.50016298e-01]\n",
      " [-5.41637972e-01]\n",
      " [-2.45312337e-01]\n",
      " [-8.69194004e-01]\n",
      " [-1.73928741e+00]\n",
      " [-1.92594351e+00]\n",
      " [-1.51704319e+00]\n",
      " [-1.62961788e+00]\n",
      " [-8.01649190e-01]\n",
      " [-7.13768304e-01]\n",
      " [-2.95426231e-01]\n",
      " [-6.68738428e-01]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import MaxAbsScaler\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "\n",
    "#构造归一化器\n",
    "\n",
    "#ms_x=MinMaxScaler()\n",
    "#ms_y=MinMaxScaler()\n",
    "ms_x=MaxAbsScaler()\n",
    "ms_y=MaxAbsScaler()\n",
    "\n",
    "\n",
    "#分别对训练数据及测试数据进行归一化\n",
    "x_train = ms_x.fit_transform(x_train)\n",
    "x_test = ms_x.transform(x_test)\n",
    "\n",
    "\n",
    "#y_train = ms_y.fit_transform(y_train.reshape(-1,1))\n",
    "#y_test = ms_y.transform(y_test.reshape(-1,1))\n",
    "\n",
    "print(y_train)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.模型确定/模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1 最小二乘线性回归"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.1 LinearRegression模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>权重</th>\n",
       "      <th>特征</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[1.463397832354528]</td>\n",
       "      <td>atemp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[0.4001713581573104]</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.054988049543415386]</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[0.012038302497127127]</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[2.220446049250313e-16]</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[-0.1847612007831562]</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[-0.289432895528559]</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[-0.46192285153715723]</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[-0.6047425476185336]</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        权重          特征\n",
       "6      [1.463397832354528]       atemp\n",
       "0     [0.4001713581573104]      season\n",
       "3   [0.054988049543415386]     weekday\n",
       "4   [0.012038302497127127]  workingday\n",
       "1  [2.220446049250313e-16]          yr\n",
       "2    [-0.1847612007831562]     holiday\n",
       "7     [-0.289432895528559]         hum\n",
       "8   [-0.46192285153715723]   windspeed\n",
       "5    [-0.6047425476185336]  weathersit"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#SVM方法优化参数\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# 使用默认配置初始化学习器\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 训练优化模型参数\n",
    "lr.fit(x_train,y_train)\n",
    "\n",
    "#预测\n",
    "y_test_pred_lr=lr.predict(x_test)\n",
    "y_train_pred_lr=lr.predict(x_train)\n",
    "\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"特征\":list(columns), \"权重\":list((lr.coef_.T))})\n",
    "fs.sort_values(by=['权重'],ascending=False)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.2根据训练好的模型及它预测的数据，与真实目标数据对比，显示评价指标分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LinearRegression模型在训练集上的R2Score为 0.7557813910164082\n",
      "LinearRegression模型在测试集上的R2Score为 -0.7251550120017354\n"
     ]
    }
   ],
   "source": [
    "# 使用r2_score评价模型在测试集和训练集上的性能，并输出评估结果\n",
    "\n",
    "\n",
    "#训练集\n",
    "print('LinearRegression模型在训练集上的R2Score为', r2_score(y_train,y_train_pred_lr ))\n",
    "\n",
    "#测试集\n",
    "print('LinearRegression模型在测试集上的R2Score为', r2_score(y_test, y_test_pred_lr))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型在训练集上拟合的比较好，但在测试集上的R2_SCORE为负.下面结合图形分析原因"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.3残差的分布直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAFtCAYAAAA9JqLqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xuc1NV9//HXh10u4WYUtqihgjGmXpqoiEZQG6KIimLQtiEipmqMoQ81jfWXGE1FGjXG1CTWxEtR06jVtF4i9R41lYhXQA2SNIlRowEKERDBCHLZPb8/vl/WZV3YYdmFw87r+Xjsg5nvnJnvOfOd4T3nfM+ciZQSkiQpH122dgUkSdL6DGdJkjJjOEuSlBnDWZKkzBjOkiRlxnCWJCkzhrO0DYiIaGFb7daoi6SOZzhLLYiIz0fEqE0ov0fzsIyIL0XEn22gfI+IuCMitouID0TEvRFRt5FdHBQRjzTb9vOIGFJh/f42Ik6LiI9spE4HRMQpTa5/OiImVvDYPSOipsJ6dImIEZWUlaqZn7yllj0EPBQRF6aUpkbExcAzwExg15TSsxHxq5TS3mWv9j5gQlmGiOgNnANM2cDjnw3sBOxXXl8IfDYi5gABrEopPdWk/MeAJ9ddiYgPAv2BF5o+aEQcDvwbsLbcVFvWaztgt/I+h0fEUalcgSgiugFrgHnA9yLilpRSPfD/gEvWlUkprS4vPwL0Le8DsDuwIiLml9e7AgtSSmNbaHdP4D8j4riU0oyWnpiIeL6s9+qWbi/9eUppwEZul7ZphrPUgpTS/IgYDXym3FRLETq7A18AngVWlrcdSRHKsyPifOB44INADfBoGd69gUNSSm9HxH7AxcDlwFCgB/DXwG/L6wBvAE8BRMS9wAHAyogYSxGYfct9/K4c8d4xpdQbmAbsBfyifKw1QD3wIYqRsiuAJcAuwOvlvq4E9gUayuvLI+J/gVXAhRExiSLsP1k+N0c0fa4i4iHgopTSs82fx4joAtSuC/aU0p8i4h+BPs3K1QINKaWGss4npJRei4jhwIXA6CYfJmqB15rvS+pMDGepmTI896MIq6vKzWuARBF0zZ0LnA78HbBzSunAiJgKXJhSmtPssfsBPwYWA0dQ9A5rKXqUx5bF+lKE8Tq7AXuklN6KiEsogu3vgL9KKf22fNxXAFJK9eU+lqeUVpS3jQRGUHyIGEERzAOAb5aPfyZFgK4py/8ROLhJT7lb83ZHxOeAfyyv7g78KCJWlddvTil9t7x8APAfEVFftnF7YH75GE0fsgY4AZhD2SOPiO2A6yk+BM2MiD2A81h/ZEDqlAxn6f26UQTgJOB2irDoRhHO64mICRRBdyowFrguIl4A/hz4t4hYklIa0+QuPYGvUwxr3wC8BfSi+BBwRVmmK0VALy2vN7C+TwJpXTC3UOazwOCIeBl4G3iEIvzmAX+XUppb1j3K3ugOFEP4qyiGv2uA/ynDM8q2fwO4t8k+Plg+N99uVrfPAR9dd6XsTe9e7m8kcEZK6TO0rqbc35vAdIqRidOBa3GujKqA4Sw1UwbKsxFxDu+d9+wNvNtC8YeB/6MIpctTSj+OiF0ozgXPBK5r9thzgbkRcTZFgH8Q+ADFe3FwWawb8PRGqjgDuCEibkwpfb7c1gAQEX2ALwMHA/2Ar6SUvhoRf0ERpuMj4hPAXwJHRsTrwLKU0gHl/b8GdEspfaPpDiOiNiJqU0prm+zvDGB0s7r9WbmflvQq9/mbZttfTikd22xbPcUHmMXAE2WbjkkpNZRD5VKnZjhLlfkL4A8UYdoopfRGRKwBaspg7kcxzP0cRQ/4IxHxNPB2Sqnp7O9ewBiK8A+KXu3flLd1pThHfG6T8tPLoeEdga+llJ6IiCsi4siU0k+blBtHMTntPOAV4JWI+BWwnGI4+/fAr4G5KaXfR8QBwPURsRboXrbzxYg4rln7a4ALgAebbHsB+GmzcsNaevJKuwBXpJQuXrchIg4B/rmFsn8OTC4v30YxGe6LETEFOGsj+5A6BcNZ2rj9I+J3wCCKCVufaHpjRPQH7gH+NyKepOgp96MI0bXl9TMpgn3dfbpSDGPflVJaERF/DQxIKV3TpEy3JsPOAIc2Oee8zneAz0XEz4E/ldt+SDHs+03gUmAIcFlKaVlE/JRikte3KSakvZBSmkkxGYwy+B6kCP/GYfKI6J5SWnc+uaklwMvNtn24xWexMLKsc1M7AgtaKDuXYjTi/4CTy/ZMAb5IyyMYUqdiOEsb1oXivPAtwDMppVROjmqUUlocEccDv6To8fanODc6gmIoForh3y7AV8qvWD1Ubv9iOflsJVAfEd8HZvHeV5TGUU6e2oC7KT4YfJCiZ0wZqg1lb/nBlNKLTcr/BrgJOLLpzOqI6E4xY3tHivPFT0TEYIrz1YuAHhExfN0EsSaOogz2JvoBtzavaEQcRvEBZ3qzmwZQjBqsV7xsy/yIOI9iJvtdwM/LDxm168pInZXhLLWgXBBkAHA+RS/z+PKmP1AEBUCviPgocAxFz+4diq8n7UkxM3ogxbnZScALEXFvSunxiBhDMalrAkUP+jVgZ+BXwD8A9wOPUZxvhSL0mw5rX1hub6B4Dx9Fkx5s2RO/FDig/BrXJ8v7/AH4X4rJYntSBO9citnjj1B8fWlt+Rg/oPhA8h/NnpemwfiDlNK3mt1+CsVQfi1ASmltRHyEokf/t02+DtWbYiLa8cB/Nnv6u667kFK6PCL+HTiJYsj9V+VN/t+lTi3eGzWTtE654tWxwKMUX1l6sIUyF1JMfjoO+PeyFz0JuJpi+PtG4NKU0g/K7+supwjieylmH1+XUno9Iv4e+GhK6ZxyyPvY8u/i8ru+pwO3pJRWRcQ+wMqU0ksRsVO5r3WPtTwiDi3rdExK6fmIOLd8rEkppenlMPyPy/pNpOjFH0jxXeuLKYa9ofhgsrKs87rvaX+SYqLZRWx8gRAoAvYK4AHg58DZKaXHmjx3V1IE8/8A/5BSWt7ktufL+mxsHzu5CIk6M8NZ6gDrZhQ3PXe7BffdJ6X0ditl9gJ+nbbAfwDRZHWxCsv3A94qVymTqpLhLElSZvy+oCRJmTGcJUnKTIfPeOzfv38aPHhwR+9GkqTsPffcc4tTShv7eVhgC4Tz4MGDmTVrVkfvRpKk7JVL5rbKYW1JkjJjOEuSlBnDWZKkzLgEniRlYs2aNcybN4933/W3PbZ1PXr0YODAgXTt2rX1wi0wnCUpE/PmzaNPnz4MHjyYYll0bYtSSixZsoR58+ax6667tukxHNaWpEy8++679OvXz2DexkUE/fr126wREMNZkjJiMHcOm3scDWdJ0gbV19ezod9gaNozXLNmDWvWrGmx3Ny5czd4W0vWrFlDQ8N7vxmzdu3axutvv73h33R59dVXWbp0acX7aYtly5Y1Xn7jjTc6bD+ec5akTE2evOUfb+3atTz55JPU1NQA8F//9V/07NmTMWPGANClSxeGDx8OwNixYzn//PMZNGgQDz/8MNOnT+fiiy+mvr6eQYMGUVtbRMz48eOZOnUq/fr1a3Gf06dP5xvf+AY9evTg+eef58ILL+T+++/nqaee4tBDD2Xt2rVMnjyZPfbYg5EjR3L55Zdz9dVX06tXL1auXMnXvvY19ttvP374wx9y2GGHcdhhhwHw9a9/ndNPP51dd92V1atXc+KJJ3LXXXc17re+vp6IoEuXLjQ0NJBS4qabbmKvvfZi+fLljBo1ar16NjQ0cMQRR/Dggw/Sr18/jjnmGG6//fY2n1feGMNZktQopcTChQvp3r07AC+99BJjxoxh8eLFQBHOAK+88grdu3dn1apV3HHHHcycOZNVq1Zx5513snbtWs4880z69OkDwOLFixk3btz79rVy5Uoee+wxDj30UM477zweeughTjvtNI4//ngmTpzIkUceydSpU9e7zwMPPMDSpUupqanh0ksv5dZbb2Xx4sWMGjWK4cOHN9YP4LnnnuPiiy8G4JFHHqFnz5785je/AeDDH/4w9913HxdffDELFy5k11135YILLuDNN99k+fLlXHfddfTt25eDDjoIgKOPPpqamhoigs9+9rNA0XM+++yzWbVqFbfccgs77rhjux0Hw1mS1Khr166MGzeO/fffvzFc77zzTgCWLFnCnDlzALjgggvYc889GTlyJJdddhnz5s2jS5cuLFu2jAsvvLDxvikl+vfvz6OPPrrR/fbs2ZNnn32WK664gmeeeYYvfelL7LvvvkycOJGnnnqKF198kWeeeYalS5dy9NFHAzBx4kQ+9rGP0bVrV7p169b4WPX19fTv35999tmHIUOGMGbMGF544QX69u3Lt771LWbMmMFPfvITTjjhBLp3786CBQs4/fTTefXVV5k+fTp33XUXO++8MzfffHNjON92220sXryYiGDChAnceOONdO/enZQSvXr1atdgBsNZktSCrl27MmLEiPW23XfffQDccccdzJ49m1133ZUuXbrwzjvvcMsttwBw//33r3fed+HChdTVbfx3Hm699VamTJlCSokRI0Zw1FFHMXr0aHr37s2wYcOYN28eAHvvvTcnnHACH/nIRwCoqamhb9++73u8mpoahgwZws9+9jOmTZvGNddcw0477cR3vvMd+vbty5lnntk4MnDnnXfyu9/9jvPPP5+LLrqIJUuWUFdXxznnnNM447pHjx689tprPPbYYyxdupTVq1fzyCOPAMUHgd13353jjjuuDc/yhhnOkqQWPfHEE+tdXzcxbO+99+bKK69k2rRpQDE8/fLLLwPvnyS1bNkyli9fzsiRI9fbvmbNGurr63niiSc48cQTGT9+PGPGjGGvvfZi55135tVXX2XhwoX079+/8T59+vThnnvuoba2lpQSa9asabzc3OzZsxkxYgRvvfUWY8eO5eSTT2bChAncc889rFq1il69ejFjxgyWL1/O9OnTGTNmDMcccwzvvPMOU6dO5eWXX6ahoYGvfvWrLF26lH/5l38hIli8eDHLly9v/KACxVD7ypUrWxy6byvDWdI2Z1MmSrX3pKpqMnTo0PWurxua3muvvVixYkXj9gULFnDDDTcARU/5iCOOAIoJVLvtttv7hrRXr17Na6+9xiWXXAKw3nniyy67jOeff55XX32VuXPnsssuu6wXvv/93//NSy+9RG1tLW+//TZ9+vRpDOqm9t13Xx599FGmTZvGtGnT2G233aipqeHFF19k5cqV9OrVi8WLFzNmzBiOP/54Bg4cyJQpUxg0aBD9+/fn8ssvZ/LkyRx44IE0NDQwatQo5s+fz4QJE5g5c2bjyl/rJpK191fgDGdJUqPbbruN66+/nldeeYXevXuvd9vrr7/Opz71KU466ST23Xffxu39+/dn7NixAMyYMaNx++zZszn77LMbZ22vs2bNGiZPnszgwYPft/+amhp69uzJoEGDePzxx+nevTvDhg0DiiC86qqruPPOO/nFL37BT37yE37/+9/zhS98gYaGhvf19Ju7+uqrGTBgACtXrqRnz56MHj0agJtvvpmvfOUrHHzwwQDcfffdnHrqqVx//fVEBDU1NbzxxhuMHz+evffem+OOO445c+bw0Y9+lO7du3Puuee+b2RgcxnOkpSprdHrHz9+POPHj2f69Olcd911XHvttfTp04eJEydy9NFHc+qpp7LDDjswc+ZMGhoaqK+vZ7vttuOQQw4B4K233gKKc7H77bffBgPz6quvZtCgQY3XU0rrDZv/7Gc/4/DDD+fkk0/mrLPOAuCGG25g+PDh9OnTh0mTJjF16lRuuOEGrrvuOsaMGcMNN9zA4YcfDsALL7yw3rA2wM477wwUE9vW9XR/8IMfMHjwYA4++GDmzp3LZZddRq9evejXrx+1tbU88MAD9O/fvzGs132NbMKECUyePLnx/Hd7M5wlSY1SSnz5y1+mX79+fO9732uccHX11Vdz6623cs455/CjH/2IVatWsXjx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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28ae95c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,ax=plt.subplots(figsize=(7,5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_train - y_train_pred_lr,bins=40, label='真值与预测的残差', color='b', alpha=.5); \n",
    "ax.set_title(\"训练集的残差直方图\") \n",
    "ax.legend(loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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eDAPP/wwZ5xxBjfffDP33nsv++67L6tXr6axsZF3v/vdTJw4kfPOO48LL7yQoUOHsnz5cr7whS+w22678e1vf5v99tuP/fbbD4DTTz+d4447ju22246VK1dy1FFHcf3117cet6mpiYigX79+NDc3k5lcfvnl7LTTTixdupRJkyatUWdzczMHHHAAt956KyNGjOCDH/wg11xzTaevK29Ih8I5IrYE3gc8kpmLN9ZekrRpykwWLlzIoEGDAPjd737H5MmTWby4+tHfr1814Prkk08yaNAgVqxYwbXXXsuDDz7IihUruO6661i9ejUnnngiw4YNA2Dx4sVMmTJlrWMtX76cu+66i3333ZdTTjmFH/3oR3ziE5/g8MMP54QTTuDAAw9k1qxZa7zmlltuYcmSJTQ0NPDFL36Rq666isWLFzNp0iT22muv1voAHnroIaZPnw7A7bffzpAhQ/jNb34DwDve8Q5uuukmpk+fzsKFC9luu+047bTTeOGFF1i6dCmXXHIJw4cPZ4899gDg4IMPpqGhgYjgox/9KFD1nE866SRWrFjBlVdeydZbb91l/w4bDef6F8zfBNwMfD0i9gO+BOwE3JyZ53RZNZKkHjVgwACmTJnC+973vtZwve666wB4/vnnefzxxwE47bTT2HHHHZk4cSLnnnsu8+fPp1+/frz00kucccYZra/NTEaOHMkdd9yxweMOGTKEn//853z1q1/l/vvv5x//8R/ZddddOeGEE7j33nt57LHHuP/++1myZAkHH3wwACeccALvec97GDBgAAMHDmx9r6amJkaOHMkuu+zCuHHjmDx5Mo888gjDhw/nS1/6Eg888AA/+MEPOOKIIxg0aBALFizguOOO46mnnmLOnDlcf/31bLPNNlxxxRWt4Xz11VezePFiIoJp06Zx2WWXMWjQIDKToUOHdmkwQ8d6zu8F/jkz76+Dej+gITP3jIhvR8QOmfn7Lq1KktSjBgwYwIQJE9bYdtNNNwFw7bXX8uijj7LddtvRr18/XnnlFa688koAbr755jWu+y5cuJBRozb8ex6uuuoqZsyYQWYyYcIEDjroIA455BA222wz9txzT+bPnw/AzjvvzBFHHME73/lOABoaGhg+fPha79fQ0MC4ceO48847mT17NhdddBFve9vb+NrXvsbw4cM58cQTW0cGrrvuOn7/+99z6qmn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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28aeb940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,ax=plt.subplots(figsize=(7,5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_test - y_test_pred_lr,bins=40, label='真值与预测的残差', color='b', alpha=.5); \n",
    "ax.set_title(\"测试集的残差直方图\") \n",
    "ax.legend(loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.4预测与真值的散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28ab2da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_train, y_train_pred_lr)\n",
    "plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "plt.axis('tight')\n",
    "plt.xlabel('真值')\n",
    "plt.ylabel('预测值')\n",
    "plt.title(\"训练集\")\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28c7e550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_test, y_test_pred_lr)\n",
    "plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "plt.axis('tight')\n",
    "plt.xlabel('真值')\n",
    "plt.ylabel('预测值')\n",
    "plt.title(\"测试集\")\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由散点图与直方图可看出，在测试集上，真值比预测值普遍偏大。结合数据分割时data_2011.describe()与data_2012.describe()的统计图可知,用\n",
    "户数y在2011-2012年间出现了较大的增长.但2011与2012的其它x特征变化浮动不大。故模型预测值偏小"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1.后尝试用原始全部数据来拿训练模型，再去预测12年数据。最后R2_Score结果在训练集和测试集上分别为0.6和0.5\n",
    "#### 2.尝试不去掉与y高度线性相关的y1(casual)、y2(registered) .最后R2_Score结果在训练集和测试集上分别为1和0.9999"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  5.2岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "岭回归在训练集上的R2_Score: 0.7556428130488919\n",
      "岭回归在测试集上的R2_Score: -0.7322421954937892\n"
     ]
    }
   ],
   "source": [
    "#岭回归／L2正则\n",
    "#class sklearn.linear_model.RidgeCV(alphas=(0.1, 1.0, 10.0), fit_intercept=True, \n",
    "#                                  normalize=False, scoring=None, cv=None, gcv_mode=None, \n",
    "#                                  store_cv_values=False)\n",
    "from sklearn.linear_model import  RidgeCV\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "alphas = [ 0.001,0.01, 0.1, 1, 10,100]\n",
    "#n_alphas = 20\n",
    "#alphas = np.logspace(-5,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)  \n",
    "\n",
    "#模型训练\n",
    "ridge.fit(x_train, y_train)    \n",
    "\n",
    "#预测\n",
    "y_test_pred_ridge = ridge.predict(x_test)\n",
    "y_train_pred_ridge = ridge.predict(x_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print(\"岭回归在训练集上的R2_Score:\", r2_score(y_train, y_train_pred_ridge)) \n",
    "print(\"岭回归在测试集上的R2_Score:\", r2_score(y_test, y_test_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型预测结果和OLS近似，R2_Score为负原因与OLS一样，不再赘述。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xdChQ3n44Yc5/fTTuemmm7j33nvZZ599WLNmDU1NTbzrXe9i8uTJnHvuuVxwwQUMHz6cFStW8IUvfIHddtuNb3/72+y7777su+++AJx22mkcd9xxbLfddqxatYojjzyS6667rm2/zc3NRAQDBgygpaWFzOSyyy5jp512YtmyZUyZMmWtOltaWth///255ZZbGDVqFB/84Ae5+uqru3xe+Y0YzpKkNpnJokWLGDJkCAC//vWvmTp1KosXLwaqcAZ48sknGTJkCCtXruSaa65h/vz5rFy5kmuvvZY1a9Zw4oknMmLECAAWL17MtGnTXrevFStWcNddd7HPPvvw+c9/nltvvZWPf/zjHHbYYZxwwgkccMABzJkzZ63n3HzzzSxZsoSGhga++MUvcuWVV7J48WKmTJnCnnvu2VYfwEMPPcTMmTMBuP322xk2bBi/+tWvAHj729/OjTfeyMyZM1m0aBHbbbcdp556Kr///e9ZtmwZF198MSNHjuT9738/AAcddBANDQ1EBB/96EeBqud80kknsXLlSq644gq23nrrbvs+GM6SpDaDBg1i2rRpvPe9720L12uvvRaAF198kccffxyAU089lR133JHJkydzzjnnsGDBAgYMGMDSpUs5/fTT256bmYwePZo77rjjDfc7bNgwfvazn/HVr36V+++/n7//+79n11135YQTTuDee+/lscce4/7772fJkiUcdNBBAJxwwgm8+93vZtCgQQwePLjttZqbmxk9ejS77LILEyZMYOrUqTzyyCOMHDmSL33pSzzwwAP84Ac/4PDDD2fIkCEsXLiQ4447jqeeeop58+Zx3XXXse2223L55Ze3hfNVV13F4sWLiQhmzJjBpZdeypAhQ8hMhg8f3q3BDIazJGkdBg0axKRJk9baduONNwJwzTXX8Oijj7LddtsxYMAAXnnlFa644goAbrrpprXO+y5atIjGxjf+nIcrr7ySWbNmkZlMmjSJAw88kIMPPpjNNtuMPfbYgwULFgCw8847c/jhh/OOd7wDgIaGBkaOHPm612toaGDChAnceeedzJ07lwsvvJBtttmGr33ta4wcOZITTzyxbWTg2muv5Te/+Q2nnHIKZ555Ji+++CKNjY185jOfaZtxPXToUJ5++mnuuusulixZwqpVq7j99tuB6o3ADjvswCGHHNKFo7x+hrMkaZ3uvvvute63TgzbeeedOe+885g7dy5QDU8/8cQTwOsnSS1dupRly5YxefLktbavXr2a5uZm7r77bo488kimT5/O1KlT2Wmnndh222156qmnWLRoEaNHj257zogRI7jhhhsYOHAgmcnq1avbbnf06KOPMmnSJF566SUOPfRQjj76aGbMmMENN9zAypUrGT58OA888ADLli1j3rx5TJ06lQ9+8IO88sorzJkzhyeeeIKWlhY+97nPsWTJEr7yla8QESxevJhly5a1vVGBaqh9xYoV6xy67yrDWdIm581MlOruSVX9ycSJE9e63zo0vdNOO7F8+fK27QsXLmT27NlA1VPef//9gWoC1fbbb/+6Ie1Vq1bx9NNPc/bZZwOsdZ74nHPO4eGHH+app57i2WefZezYsWuF73/8x3/w61//moEDB/Lyyy8zYsSItqBub9ddd+WOO+5g7ty5zJ07l+23356GhgYee+wxVqxYwfDhw1m8eDFTp07lsMMOY8yYMcyaNYtx48YxevRozj33XJqamth9991paWlhypQpPPfcc8yYMYP58+e3rfzVOpGsuy+BM5wlSW2uuuoqLrnkEp588kk222yztR575pln+MAHPsBRRx3Frrvu2rZ99OjRHHrooQA88MADbdsfffRRTjrppLZZ261Wr15NU1MT48ePf93+GxoaGDZsGOPGjeOnP/0pQ4YMYY899gCqIDz//PO59tpr+fnPf84PfvADfvvb3/LJT36SlpaW1/X0O7rgggvYaqutWLFiBcOGDePggw8G4PLLL+ezn/0se+21FwDXX389xx57LJdccgkRQUNDA88//zzTp09n55135pBDDuHxxx/nne98J0OGDOHkk09+3cjAxjKcJalQvdHrnz59OtOnT2fevHlcfPHFXHTRRYwYMYITTjiBgw46iGOPPZYtt9yS+fPn09LSQnNzM5tvvjl77703AC+99BJQnYvdbbfd1huYF1xwAePGjWu7n5lrDZvfeeed7Lfffhx99NF86lOfAmD27NnsueeejBgxgjPOOIM5c+Ywe/ZsLr74YqZOncrs2bPZb7/9AHjkkUfWGtYG2HbbbYFqYltrT/db3/oW48ePZ6+99uLZZ5/lnHPOYfjw4YwaNYqBAwdy8803M3r06Lawbr2MbMaMGTQ1NbWd/+5uhrMkqU1m8ulPf5pRo0bxjW98o23C1QUX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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28ae35c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,ax=plt.subplots(figsize=(7,5))\n",
    "f.tight_layout()\n",
    "ax.hist(y_test - y_test_pred_ridge,bins=40, label='真值与预测的残差', color='b', alpha=.5); \n",
    "ax.set_title(\"测试集的残差直方图\") \n",
    "ax.legend(loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x28fec240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_test, y_test_pred_ridge)\n",
    "plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "plt.axis('tight')\n",
    "plt.xlabel('真值')\n",
    "plt.ylabel('预测值')\n",
    "plt.title(\"测试集散点图\")\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x290976a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 1.0\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OLS权重</th>\n",
       "      <th>岭回归权重</th>\n",
       "      <th>特征</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[1.463397832354528]</td>\n",
       "      <td>[1.4401715867629594]</td>\n",
       "      <td>atemp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[0.4001713581573104]</td>\n",
       "      <td>[0.4032770926384189]</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.054988049543415386]</td>\n",
       "      <td>[0.05441569790636086]</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[0.012038302497127127]</td>\n",
       "      <td>[0.013346443355013449]</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[2.220446049250313e-16]</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[-0.1847612007831562]</td>\n",
       "      <td>[-0.1679053480113263]</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[-0.289432895528559]</td>\n",
       "      <td>[-0.26539492900912626]</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[-0.46192285153715723]</td>\n",
       "      <td>[-0.43976765871831064]</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[-0.6047425476185336]</td>\n",
       "      <td>[-0.6057049215994941]</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     OLS权重                   岭回归权重          特征\n",
       "6      [1.463397832354528]    [1.4401715867629594]       atemp\n",
       "0     [0.4001713581573104]    [0.4032770926384189]      season\n",
       "3   [0.054988049543415386]   [0.05441569790636086]     weekday\n",
       "4   [0.012038302497127127]  [0.013346443355013449]  workingday\n",
       "1  [2.220446049250313e-16]                   [0.0]          yr\n",
       "2    [-0.1847612007831562]   [-0.1679053480113263]     holiday\n",
       "7     [-0.289432895528559]  [-0.26539492900912626]         hum\n",
       "8   [-0.46192285153715723]  [-0.43976765871831064]   windspeed\n",
       "5    [-0.6047425476185336]   [-0.6057049215994941]  weathersit"
      ]
     },
     "execution_count": 241,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1)) \n",
    "\n",
    "#这是为了标出最佳参数的位置，不是必须\n",
    "#plt.plot(np.log10(ridge.alpha_)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"特征\":list(columns), \"OLS权重\":list((lr.coef_.T)), \"岭回归权重\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['OLS权重'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 最佳的正则参数为alpha=1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.3 LASSO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LASSO回归在训练集上的R2_Score: 0.7495402634830861\n",
      "LASSO回归在测试集上的R2_Score: -0.7784896161715549\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "# class sklearn.linear_model.LassoCV(eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, \n",
    "#                                    normalize=False, precompute=’auto’, max_iter=1000, \n",
    "#                                    tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=1,\n",
    "#                                    positive=False, random_state=None, selection=’cyclic’)\n",
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "lasso = LassoCV(alphas=alphas)  \n",
    " \n",
    "\n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(x_train, y_train.ravel())  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(x_test)\n",
    "y_train_pred_lasso = lasso.predict(x_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print(\"LASSO回归在训练集上的R2_Score:\", r2_score(y_train, y_train_pred_lasso)) \n",
    "print(\"LASSO回归在测试集上的R2_Score:\", r2_score(y_test, y_test_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x29111320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.01\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OLS权重</th>\n",
       "      <th>lasso权重</th>\n",
       "      <th>岭回归权重</th>\n",
       "      <th>特征</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[1.463397832354528]</td>\n",
       "      <td>1.407319</td>\n",
       "      <td>[1.4401715867629594]</td>\n",
       "      <td>atemp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[0.4001713581573104]</td>\n",
       "      <td>0.390112</td>\n",
       "      <td>[0.4032770926384189]</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.054988049543415386]</td>\n",
       "      <td>0.037445</td>\n",
       "      <td>[0.05441569790636086]</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[0.012038302497127127]</td>\n",
       "      <td>0.002221</td>\n",
       "      <td>[0.013346443355013449]</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[2.220446049250313e-16]</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[-0.1847612007831562]</td>\n",
       "      <td>-0.000000</td>\n",
       "      <td>[-0.1679053480113263]</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[-0.289432895528559]</td>\n",
       "      <td>-0.000000</td>\n",
       "      <td>[-0.26539492900912626]</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[-0.46192285153715723]</td>\n",
       "      <td>-0.243181</td>\n",
       "      <td>[-0.43976765871831064]</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[-0.6047425476185336]</td>\n",
       "      <td>-0.653484</td>\n",
       "      <td>[-0.6057049215994941]</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     OLS权重   lasso权重                   岭回归权重          特征\n",
       "6      [1.463397832354528]  1.407319    [1.4401715867629594]       atemp\n",
       "0     [0.4001713581573104]  0.390112    [0.4032770926384189]      season\n",
       "3   [0.054988049543415386]  0.037445   [0.05441569790636086]     weekday\n",
       "4   [0.012038302497127127]  0.002221  [0.013346443355013449]  workingday\n",
       "1  [2.220446049250313e-16]  0.000000                   [0.0]          yr\n",
       "2    [-0.1847612007831562] -0.000000   [-0.1679053480113263]     holiday\n",
       "7     [-0.289432895528559] -0.000000  [-0.26539492900912626]         hum\n",
       "8   [-0.46192285153715723] -0.243181  [-0.43976765871831064]   windspeed\n",
       "5    [-0.6047425476185336] -0.653484   [-0.6057049215994941]  weathersit"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses) \n",
    "#plt.plot(np.log10(lasso.alphas_)*np.ones(3), [0.3, 0.4, 1.0])\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"特征\":list(columns), \"OLS权重\":list((lr.coef_.T)), \"岭回归权重\":list((ridge.coef_.T)), \"lasso权重\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['OLS权重'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 继续扩大超参数搜索范围"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可看出，alpha最佳值为预设参数的最小值，为此我们可以进一步探索更优的超参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LASSO回归在训练集上的R2_Score: 0.7556875433471425\n",
      "LASSO回归在测试集上的R2_Score: -0.7306348078514067\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "# class sklearn.linear_model.LassoCV(eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, \n",
    "#                                    normalize=False, precompute=’auto’, max_iter=1000, \n",
    "#                                    tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=1,\n",
    "#                                    positive=False, random_state=None, selection=’cyclic’)\n",
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "alphas = [ 0.00001,0.0001,0.001,0.01]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "lasso = LassoCV(alphas=alphas)  \n",
    " \n",
    "\n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(x_train, y_train.ravel())  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(x_test)\n",
    "y_train_pred_lasso = lasso.predict(x_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print(\"LASSO回归在训练集上的R2_Score:\", r2_score(y_train, y_train_pred_lasso)) \n",
    "print(\"LASSO回归在测试集上的R2_Score:\", r2_score(y_test, y_test_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x29195208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.001\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OLS权重</th>\n",
       "      <th>lasso权重</th>\n",
       "      <th>岭回归权重</th>\n",
       "      <th>特征</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>[1.463397832354528]</td>\n",
       "      <td>1.457569</td>\n",
       "      <td>[1.4401715867629594]</td>\n",
       "      <td>atemp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>[0.4001713581573104]</td>\n",
       "      <td>0.398968</td>\n",
       "      <td>[0.4032770926384189]</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>[0.054988049543415386]</td>\n",
       "      <td>0.053680</td>\n",
       "      <td>[0.05441569790636086]</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>[0.012038302497127127]</td>\n",
       "      <td>0.012207</td>\n",
       "      <td>[0.013346443355013449]</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>[2.220446049250313e-16]</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>[-0.1847612007831562]</td>\n",
       "      <td>-0.148564</td>\n",
       "      <td>[-0.1679053480113263]</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>[-0.289432895528559]</td>\n",
       "      <td>-0.255943</td>\n",
       "      <td>[-0.26539492900912626]</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>[-0.46192285153715723]</td>\n",
       "      <td>-0.439107</td>\n",
       "      <td>[-0.43976765871831064]</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>[-0.6047425476185336]</td>\n",
       "      <td>-0.611656</td>\n",
       "      <td>[-0.6057049215994941]</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     OLS权重   lasso权重                   岭回归权重          特征\n",
       "6      [1.463397832354528]  1.457569    [1.4401715867629594]       atemp\n",
       "0     [0.4001713581573104]  0.398968    [0.4032770926384189]      season\n",
       "3   [0.054988049543415386]  0.053680   [0.05441569790636086]     weekday\n",
       "4   [0.012038302497127127]  0.012207  [0.013346443355013449]  workingday\n",
       "1  [2.220446049250313e-16]  0.000000                   [0.0]          yr\n",
       "2    [-0.1847612007831562] -0.148564   [-0.1679053480113263]     holiday\n",
       "7     [-0.289432895528559] -0.255943  [-0.26539492900912626]         hum\n",
       "8   [-0.46192285153715723] -0.439107  [-0.43976765871831064]   windspeed\n",
       "5    [-0.6047425476185336] -0.611656   [-0.6057049215994941]  weathersit"
      ]
     },
     "execution_count": 245,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses) \n",
    "#plt.plot(np.log10(lasso.alphas_)*np.ones(3), [0.3, 0.4, 1.0])\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"特征\":list(columns), \"OLS权重\":list((lr.coef_.T)), \"岭回归权重\":list((ridge.coef_.T)), \"lasso权重\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['OLS权重'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 为此，最佳的超参数应为alpha = 0.001"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结：三个模型在测试集上的预测结果不理想的原因为，用户数在2011-2012年间出现大幅度增长，而能体现出这种变化的特征为y1(casual)、y2(registered)。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 由于作业要求缘故，y1,y2必须去掉，所以导致了最后模型预测不准确"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
